#ifndef _LCD_DRV_H_
#define _LCD_DRV_H_

#include <stdint.h>
#include "fonts.h"
#define LCD_PIXEL_WIDTH       240
#define LCD_PIXEL_HEIGHT      400

#define WHITE                 0xFFFF //白色
#define BLACK                 0x0000 //黑色
#define BLUE                  0x001F //蓝色
#define BRED                  0xF81F //红色
#define GRED                  0xFFE0 //红色
#define GBLUE                 0x07FF //蓝色
#define RED                   0xF800 //红色
#define MAGENTA               0xF81F //品红
#define GREEN                 0x07E0 //绿色
#define CYAN                  0x7FFF //青色
#define YELLOW                0xFFE0 //黄色
#define BROWN                 0xBC40 //棕色
#define BRRED                 0xFC07 //棕红色
#define GRAY                  0x8430 //灰色
#define IRONGRAY              0xAD55 //铁灰色
//#define IRONGRAY              0x62CA //铁灰色
#define ORANGE                0xFD20 //橙色
//#define PURPLE                0x8010 //紫色
#define PURPLE                0xC81F //紫色
#define MIDBLUE               0x8430   

typedef struct
{
    uint16_t x;
    uint16_t y;
} LcdPoint_t;

/** Represents an area of the screen.*/
typedef struct
{
    uint16_t x1;
    uint16_t y1;
    uint16_t x2;
    uint16_t y2;
} LcdArea_t;

void LcdDrvInit(void);

/**
***********************************************************
* @brief 在指定区域内填充单个颜色
* @param (sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:
		 (ex-sx+1)*(ey-sy+1)，color:要填充的颜色
* @return 
***********************************************************
*/
void LcdFillPureColor(LcdArea_t *area, uint16_t color);


typedef struct {
    uint16_t fontSize;
    uint16_t charColor;
    uint16_t bgColor;
} CharShowInfo_t;

void LcdDrawChar(uint16_t x, uint16_t y, uint8_t ascii, uint16_t textColor, uint16_t bkColor, AsciiFontDesc_t *font);


void LcdDrawString(uint16_t x, uint16_t y, char *str, uint16_t textColor, uint16_t bkColor, AsciiFontDesc_t *font);

/**
***********************************************************
* @brief  LCD屏幕显示中文字符
* @param  xPos：窗口起点x轴坐标
* 		  yPos：窗口起点y轴坐标
* 		  ascii：要显示的字符
* 		  fontSize：字体选择，参数：CHINESE_FONT_SIZE_12，CHINESE_FONT_SIZE_16，CHINESE_FONT_SIZE_24 
* 		  charColor：选择字符的前景色
* 		  bgColor：选择字符的背景色
* @retval None 
***********************************************************
*/
void LcdShowChinese(uint16_t xPos, uint16_t yPos, uint8_t *cnArr, uint16_t fontSize, uint16_t charColor, uint16_t bgColor);

/**
***********************************************************
* @brief 清屏函数
* @param color,要清屏的填充色
* @return 
***********************************************************
*/
void LcdClear(uint16_t color);
void TurnOnScreen(void);
void TurnOffScreen(void);
#endif
